#define _CRT_SECURE_NO_WARNINGS

//class MyQueue {
//public:
//    MyQueue() {
//
//    }
//
//    void push(int x) {
//        sk1.push(x);
//    }
//
//    int pop() {
//        if (sk2.empty())
//        {
//            while (!sk1.empty())
//            {
//                sk2.push(sk1.top());
//                sk1.pop();
//            }
//        }
//        int ret = sk2.top();
//        sk2.pop();
//        return ret;
//    }
//
//    int peek() {
//        if (sk2.empty())
//        {
//            while (!sk1.empty())
//            {
//                sk2.push(sk1.top());
//                sk1.pop();
//            }
//        }
//        return sk2.top();
//    }
//
//    bool empty() {
//        return sk1.empty() && sk2.empty();
//    }
//
//private:
//    stack<int> sk1;
//    stack<int> sk2;
//};

#include <iostream>
#include <vector>
using namespace std;


//class MyCircularQueue {
//public:
//    MyCircularQueue(int k) {
//        v.resize(k + 1);
//        front = rear = 0;
//    }
//
//    bool enQueue(int value) {
//        if (isFull()) return false;
//        int n = v.size();
//        v[rear++] = value;
//        rear = rear % n;
//        return true;
//    }
//
//    bool deQueue() {
//        if (isEmpty())
//            return false;
//        front++;
//        front = front % v.size();
//        return true;
//    }
//
//    int Front() {
//        if (isEmpty())
//            return -1;
//        return v[front];
//    }
//
//    int Rear() {
//        if (isEmpty())
//            return -1;
//        return v[(rear + v.size() - 1) % v.size()];
//    }
//
//    bool isEmpty() {
//        return front == rear;
//    }
//
//    bool isFull() {
//        return (rear + 1) % v.size() == front;
//    }
//
//private:
//    vector<int> v;
//    int front;
//    int rear;
//};

//int main()
//{
//    MyCircularQueue m(2);
//    m.enQueue(1);
//    m.enQueue(2);
//    m.deQueue();
//    m.enQueue(3);
//    m.deQueue();
//    m.enQueue(3);
//    m.deQueue();
//    m.enQueue(3);
//    m.deQueue();
//    cout << m.Front() << endl;
//    return 0;
//}

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int cur = 0;
        int n = nums.size();

        for (int i = 0; i < n; i++)
        {
            if (nums[i] != val)
            {
                nums[cur] = nums[i];
                cur++;
            }
        }
        return cur;
    }
};